【新機能】AWS WAFがリクエストボディに対応しました!!
最近はもっぱら育児にはげんでいる森永です。娘超かわいいです。
なんと!AWS WAFがリクエストボディに対応しました!
今まではリクエストヘッダしか見れなかったので、POSTの通信を引っ掛けることが出来ませんでしたが、今回のアップデートでPOST通信についても対応できるようになりました!
早速試してみる
AWS WAFの管理画面で早速試してみます。
WAFの名前と、CloudWatchのメトリクス名を入力します。
「Filter settings」でフィルタの設定をするのですが、リクエストのどの部分でフィルタするかという「Part of the request to filter on」に「Body」が追加されていることが分かります。
今回は以下の様なフィルタを作成しました。
「SomethingBad」という文字列がリクエストボディに含まれていたら検出するというものです。
次にルールを作ります。
先ほど作成したフィルタに一致すれば、というルールです。
webACLにルールを設定していきます。
作成したルールが条件を満たした場合に、「Deny」するという設定にしました。
それ以外は全て通したいので「Default action」は「Allow all requests that don't match any rules」を選択します。
最後にAWS WAFをかぶせるCloudFrontを選択します。
今回はテストのため、PHPをインストールしたEC2を後ろに配置したものを選択します。
では早速テストしてみます。
以下の様な雑なテスト用フォームを作ります。
POSTを弾けるのかを見たいのでPOSTするものであればなんでもいいです。
index.html
<h1>BodyDetectTest</h1> <form action="action.php" method="post"> <input type="text" name="something" /> <input type="submit" /> </form>
action.php
<?php echo $_POST['something'] ?>
まずは、問題なさそうな文字列「SomethingGood」を送信します。
こちらは問題なく「SomethingGood」と表示されました。
次に、問題ありそうな「SomethingBad」を送信します。
すると、「ERROR」が表示されリクエストがブロックされたことが分かります!
ちゃんとリクエストボディを見てブロックしてくれたことが分かります!!
最後に
リクエストボディが見れるようになったことで、AWS WAFの有用性が格段にアップしました。
今後更に、サードパーティのAWS WAF対応が加速していくのではないかと予測しています。
期待しましょう!